package com.woniu108.order.service;


import com.alipay.api.AlipayApiException;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniu108.order.model.dto.OrderRefundDto;
import com.woniu108.order.model.form.OrderRefundAgreeRefundParam;
import com.woniu108.order.model.model.OrderRefund;
import com.woniu108.order.model.param.OrderProductRefundApplyParam;
import com.woniu108.order.model.param.OrderRefundDisagreeParam;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 订单退款申请表 服务类
 * </p>
 *
 * @author yanxi
 * @since 2024-05-23
 */
public interface OrderRefundService extends IService<OrderRefund> {

    /**
     * 申请退款(用户)
     * @param param 订单编号 退款原因 申请退款时间 登录userId
     * @return boolean
     */
    Boolean insertOrderRefund(OrderProductRefundApplyParam param);

    /**
     * 同意退款(管理员)
     * @param param 申请退款订单编号，同意退款金额，处理时间
     * @return Boolean值
     */
    Boolean agree(OrderRefundAgreeRefundParam param) throws AlipayApiException;

    /**
     * 取消退款申请(用户)
     * @param orderProductNum 商品订单编号
     * @param userId 用户id
     * @return 判定值
     */
    Boolean cancel(String orderProductNum,String userId);

    /**
     * 驳回申请（管理员）
     * @param param 参数
     * @return Boolean值
     */
    Boolean disagree(OrderRefundDisagreeParam param);

    /**
     * 查询所有申请（管理员）
     * @return 退款申请表
     */
    List<OrderRefundDto> queryAllRefund();

    /**
     * 查询订单的驳回信息
     * @param orderProductNum 商品订单信息
     * @return map 订单的驳回信息
     */
    Map<Object, Object> selectRefundByOrderProductNum(String orderProductNum);
}
